/**
	\file kernel/shellusr.h
	\brief funciones relativas al proceso usuario SHELLUSR
*/
/**
	\defgroup colorConst Constantes de color de caracter
*/
/*@{*/
#define POSRELOJ 		62
#define NEGRO 			0
#define AZUL 			1
#define VERDE 			2
#define CIAN 			3
#define ROJO 			4
#define MAGENTA 		5
#define MARRON 			6
#define BLANCO 			7
#define GRIS 			8
#define AZUL_CLARO 		9
#define VERDE_CLARO 		10
#define CYAN_CLARO 		11
#define ROJO_CLARO 		12
#define MAGENTA_CLARO 		13
#define AMARILLO 		14
#define BLANCO_BRILLANTE 	15
/*@}*/

/**
	\defgroup hwndConst Constantes de ventanas
*/
/*@{*/
#define HWND_COMANDO		0 
#define HWND_CSW		1
#define HWND_AYUDA		2
#define HWND_PROCESOS		3
#define HWND_SEP_CSW		4
#define HWND_SEP_PROCESOS	5
#define HWND_SEP_AYUDA		6
#define HWND_RELOJ		7
#define HWND_LOG        	8 /*!<nueva ventana, simula una terminal de log.*/
#define HWND_LOG_AYUDA  9     /*!<Ventana de la ayuda del log.*/
#define HWND_VENTANA_MAX 10	 /*!< Limite de ventanas en el sistema.*/
/*@}*/

#ifndef __SHELLUSR_H
#define   __SHELLUSR_H

#define TERM_SODIUM 0
#define TERM_LOG    1

#define PAUSA           iFnImprimir("\nPresione Cualquier tecla para continuar, o \"s\" para salir..."); \
         while (iCaracterLeido == -1) \
         { \
            iCaracterLeido = iFnLeerCaracter(&cCaracter);\
            if(iCaracterLeido == TECLA_s) \
             {\
               iFnSodiumCallgate(__FC_COLOR,HWND_COMANDO, BLANCO);\
               iCaracterLeido = -1; \
               return 0;\
             }\
         }\
       iCaracterLeido = -1; \
       iFnSodiumCallgate(__FC_CLS,0,0);

#define PAUSA_BREAK           iFnImprimir("\nPresione Cualquier tecla para continuar, o \"s\" para salir..."); \
        while (iCaracterLeido == -1) \
         { \
            iCaracterLeido = iFnLeerCaracter(&cCaracter);\
           if(iCaracterLeido == TECLA_s) \
             {\
               iFnSodiumCallgate(__FC_COLOR,HWND_COMANDO, BLANCO);\
               i=20;\
             }\
         }\
       iCaracterLeido = -1; \

#define PAUSA_BREAK2           iFnImprimir("\nPresione Cualquier tecla para continuar, o \"s\" para salir..."); \
        while (iCaracterLeido == -1) \
         { \
            iCaracterLeido = iFnLeerCaracter(&cCaracter);\
           if(iCaracterLeido == TECLA_s) \
             {\
               iFnSodiumCallgate(__FC_COLOR,HWND_COMANDO, BLANCO);\
               i=512;\
             }\
         }\
       iCaracterLeido = -1; \

#define PAUSA_BREAK3           iFnImprimir("\nPresione Cualquier tecla para continuar, o \"s\" para salir..."); \
        while (iCaracterLeido == -1) \
         { \
            iCaracterLeido = iFnLeerCaracter(&cCaracter);\
           if(iCaracterLeido == TECLA_s) \
             {\
               iFnSodiumCallgate(__FC_COLOR,HWND_COMANDO, BLANCO);\
               i=iArg2;\
             }\
         }\
       iCaracterLeido = -1; \

#define TAMANIO_BUFFER_SHELL 255


int iFnConvertirCmd(char*);
int iFnObtenerCmd(char*, int*, int*);
int iFnEsCmdShell(const char*);
int iFnMayusculas(char*);
int iFnEjecutarBinario(char*, int);
int iFnSodiumCallgate(int, int, int);
void vFnMenuAyuda();
void vFnMenuSet();
void vFnMenuPlanif();
int iFnFuncionIdle();
void vFnMenuDescUsr(int);
void vFnMenuDumpUsr(int,int);
int iFnCompletarComando(const char*);
void vFnAutocompletar();
char** pstFnObtenerArgumentos(char*);
void vFnCmdLogSodium();


#endif
